www.gusucode.com > VC++ VTCamera摄像头录像软件源码程序 > VC++ VTCamera摄像头录像软件源码程序/code/FilterTitleOverlay/CAutoFont.cpp
// // CAutoFont.cpp // #include <windows.h> #include "CAutoFont.h" //////////////////////////////////////////////////////////////////////////////// CAutoFont::CAutoFont() { mDC = NULL; mNewFont = NULL; mOldFont = NULL; DefaultFont(); } CAutoFont::CAutoFont(LOGFONT inFont) { mDC = NULL; mNewFont = NULL; mOldFont = NULL; CreateFont(inFont); } CAutoFont::~CAutoFont() { RestoreToDC(); } void CAutoFont::DefaultFont(void) { mLogFont.lfHeight = -12; mLogFont.lfWidth = 0; // Specifies the angle in tenths of degrees // If rotation font required, lfEscapement and lfOrientation must be the same mLogFont.lfEscapement = 0; mLogFont.lfOrientation = 0; mLogFont.lfWeight = FW_NORMAL; mLogFont.lfItalic = 0; mLogFont.lfUnderline = 0; mLogFont.lfStrikeOut = 0; mLogFont.lfCharSet = ANSI_CHARSET; mLogFont.lfOutPrecision = OUT_DEFAULT_PRECIS; mLogFont.lfClipPrecision = CLIP_DEFAULT_PRECIS; mLogFont.lfQuality = PROOF_QUALITY; mLogFont.lfPitchAndFamily = VARIABLE_PITCH | FF_ROMAN; strcpy(mLogFont.lfFaceName, "Arial"); } void CAutoFont::CreateFont(LOGFONT inFont) { RestoreToDC(); mLogFont = inFont; mNewFont = CreateFontIndirect(&mLogFont); } void CAutoFont::CreateFont(const char * inFaceName) { RestoreToDC(); strcpy(mLogFont.lfFaceName, inFaceName); mNewFont = CreateFontIndirect(&mLogFont); } void CAutoFont::CreateStockObject(int inIndex) { RestoreToDC(); // It is not necessary to delete stock objects by calling DeleteObject, // but it is not harmful. if (inIndex >= OEM_FIXED_FONT && inIndex <= DEFAULT_GUI_FONT) { mNewFont = (HFONT) GetStockObject(inIndex); } } void CAutoFont::SelectToDC(HDC inTargetDC) { if (inTargetDC && mNewFont) { mDC = inTargetDC; mOldFont = (HFONT) SelectObject(mDC, mNewFont); } } void CAutoFont::RestoreToDC(void) { if (mOldFont && mDC) { SelectObject(mDC, mOldFont); mOldFont = NULL; } if (mNewFont) { DeleteObject(mNewFont); mNewFont = NULL; } }